package gold.digger;

import java.util.LinkedList;
import java.util.List;

/**
 * Created by fanzhenyu02 on 2020/3/1.
 */
public class LC969 {

    // 记录反转操作序列
    LinkedList<Integer> res = new LinkedList<>();

    public List<Integer> pancakeSort(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            int maxIndex = 0;
            for (int j = 0; j < arr.length - i; j++) {
                if (arr[j] > arr[maxIndex]) {
                    maxIndex = j;
                }
            }

            // 第一次翻转，将最大饼翻到最上面
            reverse(arr, 0, maxIndex);
            res.add(maxIndex + 1);
            // 第二次翻转，将最大饼翻到最下面
            reverse(arr, 0, arr.length - i - 1);
            res.add(arr.length - i);
        }

        return res;
    }

    void reverse(int[] arr, int i, int j) {
        while (i < j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }


    public static void main(String[] args) {
        LC969 an = new LC969();

        int[] arr = {3, 2, 4, 1};
        System.out.println(an.pancakeSort(arr).toString());
    }
}
